
# class Person:
#     def __init__(self, name, age, gender):
#         # 实例属性
#         self.name = name
#         self.age = age
#         self.gender = gender

#     # 实例方法
#     def introduce(self):
#         return f"大家好，我叫{self.name}，今年{self.age}岁，是{self.gender}生。"

# # 学生类，继承自Person类
# class Student(Person):
#     def __init__(self, name, age, gender, student_id, grade):
#         # 调用父类的构造方法
#         super().__init__(name, age, gender)
#         self.student_id = student_id
#         self.grade = grade
#         self.courses = []  # 学生选修的课程

#     # 重写父类方法（多态）
#     def introduce(self):
#         return f"大家好，我叫{self.name}，是{self.grade}年级的学生，学号是{self.student_id}。"

#     # 学生特有的方法
#     def enroll_course(self, course):
#         if course not in self.courses:
#             self.courses.append(course)
#             course.add_student(self)
#             return f"{self.name}成功选修了{course.name}课程"
#         return f"{self.name}已经选修了{course.name}课程"

#     def list_courses(self):
#         if self.courses:
#             course_names = [course.name for course in self.courses]
#             return f"{self.name}选修的课程有：{', '.join(course_names)}"
#         return f"{self.name}还没有选修任何课程"

# class Administrator(Person):
#     def __init__(self, name, age, gender, admin_id):
#         super().__init__(name, age, gender)
#         self.admin_id = admin_id
#         self.managed_grades = []

#     def introduce(self):
#         return f"大家好，我是管理员{self.name}，工号{self.admin_id}。"

#     def add_grade(self, grade):
#         if grade not in self.managed_grades:
#             self.managed_grades.append(grade)
#             return f"成功添加{grade.name}年级到管理列表"
#         return f"{grade.name}年级已在管理列表中"

#     def list_grades(self):
#         if self.managed_grades:
#             grade_names = [grade.name for grade in self.managed_grades]
#             return f"管理的年级有：{', '.join(grade_names)}"
#         return "暂未管理任何年级"

# class Grade:
#     def __init__(self, name):
#         self.name = name
#         self.students = []
#         self.courses = []

#     def add_student(self, student):
#         if student not in self.students:
#             self.students.append(student)
#             return f"成功将{student.name}添加到{self.name}年级"
#         return f"{student.name}已在{self.name}年级中"

#     def add_course(self, course):
#         if course not in self.courses:
#             self.courses.append(course)
#             return f"成功为{self.name}年级添加{course.name}课程"
#         return f"{self.name}年级已包含{course.name}课程"

#     def list_students(self):
#         if self.students:
#             student_names = [student.name for student in self.students]
#             return f"{self.name}年级的学生有：{', '.join(student_names)}"
#         return f"{self.name}年级暂无学生"

#     def list_courses(self):
#         if self.courses:
#             course_names = [course.name for course in self.courses]
#             return f"{self.name}年级的课程有：{', '.join(course_names)}"
#         return f"{self.name}年级暂无课程"
# 
# # 示例使用
# if __name__ == "__main__":
#     # 创建管理员
#     admin = Administrator("张管理员", 35, "男", "AD001")
#     print(admin.introduce())

#     # 创建年级
#     grade1 = Grade("高一")
#     grade2 = Grade("高二")

#     # 管理员添加管理的年级
#     print(admin.add_grade(grade1))
#     print(admin.add_grade(grade2))
#     print(admin.list_grades())

#     # 创建学生
#     student1 = Student("小明", 16, "男", "S001", "高一")
#     student2 = Student("小红", 17, "女", "S002", "高二")

#     # 年级添加学生
#     print(grade1.add_student(student1))
#     print(grade2.add_student(student2))
#     print(grade1.list_students())
#     print(grade2.list_students())

#     # 创建课程
#     course1 = Course("数学")
#     course2 = Course("英语")

#     # 年级添加课程
#     print(grade1.add_course(course1))
#     print(grade2.add_course(course2))
#     print(grade1.list_courses())
#     print(grade2.list_courses())

#     # 学生选课
#     print(student1.enroll_course(course1))
#     print(student2.enroll_course(course2))
#     print(student1.list_courses())
#     print(student2.list_courses())


# import tkinter as tk

# root = tk.Tk()
# root.title("yolo")
# root.geometry('400x300+600+280')
# root.iconbitmap('icons8-卡尔·拉格菲尔德-32.ico')
# # 如果是数字使用 from_和to参数，范围0-100 ，并且与5步长递增或递减
# w = tk.Spinbox(root, from_=0, to=100, increment=5, width=15, bg="#61C061")
# w.pack()
# # 显示窗口
# root.mainloop()


# from tkinter import *

# win = Tk()
# win.title("九三")
# win.iconbitmap('icons8-卡尔·拉格菲尔德-32.ico')
# win.geometry('400x420')
# # 创建一个文本控件
# # width 一行可见的字符数；height 显示的行数
# text = Text(win, width=50, height=30, undo=True, autoseparators=False)
# # 适用 pack(fill=X) 可以设置文本域的填充模式。比如 X表示沿水平方向填充，Y表示沿垂直方向填充，BOTH表示沿水平、垂直方向填充
# text.pack()
# # INSERT 光标处插入；END 末尾处插入
# text.insert(INSERT, '纪念中国人民抗日战争暨世界反法西斯战争胜利80周年阅兵式，是纪念中国人民抗日战争暨世界反法西斯战争胜利80周年活动的重要组成部分，\
# 主题是纪念抗战伟大胜利、弘扬抗战伟大精神，于2025年9月3日在天安门广场举行。中共中央总书记、国家主席、中央军委主席习近平将检阅部队')
# win.mainloop()


# from tkinter import *

# win = Tk()
# win.title("C语言中文网")
# win.iconbitmap('icons8-卡尔·拉格菲尔德-32.ico')
# win.geometry('400x300')
# # 创建一个文本控件
# # width 一行可见的字符数；height 显示的行数
# text = Text(win, width=50, height=20, undo=True, autoseparators=False)
# text.grid()
# # INSERT 光标处插入；END 末尾处插入
# text.insert(INSERT, 'C语言中文网，一个有温度的网站')
# # 定义撤销和恢复方法，调用edit_undo()和 edit_redo()方法
# def backout():
#     text.edit_undo()
# def regain():
#     text.edit_redo()
# # 定义撤销和恢复按钮
# Button(win,text = '撤销',command = backout).grid(row=3, column=0, sticky="w", padx=10, pady=5)
# Button(win,text = '恢复',command = regain).grid(row=3, column=0, sticky="e", padx=10, pady=5)
# win.mainloop()


# from tkinter import *
# import tkinter . messagebox
# #创建主窗口
# win = Tk()
# win.config(bg='#87CEEB')
# win.title("title")
# win.geometry('450x350+300+200')
# win.iconbitmap('icons8-卡尔·拉格菲尔德-32.ico')

# # 绑定一个执行函数，当点击菜单项的时候会显示一个消息对话框
# def menuCommand() :
#     tkinter.messagebox.showinfo("主菜单栏","你正在使用主菜单栏")
# # 创建一个主目录菜单，也被称为顶级菜单
# main_menu = Menu (win)
# #新增命令菜单项，使用 add_command() 实现
# main_menu.add_command (label="文件",command=menuCommand)
# main_menu.add_command (label="编辑",command=menuCommand)
# main_menu.add_command (label="格式",command=menuCommand)
# main_menu.add_command (label="查看",command=menuCommand)
# main_menu.add_command (label="帮助",command=menuCommand)
# #显示菜单
# win.config (menu=main_menu)
# win.mainloop()


# import tkinter as tk

# root = tk.Tk()
# root.config(bg='#8DB6CD')
# root.title("Title")
# root.geometry('400x300')
# root.iconbitmap('icons8-卡尔·拉格菲尔德-32.ico')
# def func():
#     print('您通过弹出菜单执行了命令')

# # 创建一个弹出菜单
# menu = tk.Menu(root, tearoff=False)
# menu.add_command(label="新建", command=func)
# menu.add_command(label="复制", command=func)
# menu.add_command(label="粘贴", command=func)
# menu.add_command(label="剪切", command=func)
# # 定义事件函数
# def command(event):
#     # 使用 post()在指定的位置显示弹出菜单
#     menu.post(event.x_root, event.y_root)
   
# # 绑定鼠标右键，这是鼠标绑定事件
# # <Button-3>表示点击鼠标的右键，1 表示左键，2表示点击中间的滑轮
# root.bind("<Button-3>", command)
# root.mainloop()



# import tkinter.messagebox
# from tkinter import *

# # 创建主窗口
# win = Tk()
# win.config(bg='#87CEEB')
# win.title("YL")
# win.geometry('450x350+300+200')

# # 设置窗口图标（请替换为实际存在的ico文件路径）
# win.iconbitmap('icons8-卡尔·拉格菲尔德-32.ico')

# # 创建一个执行函数，点击下拉菜单中命令时执行
# def menuCommand():
#     tkinter.messagebox.showinfo("下拉菜单", "您正在使用下拉菜单功能")
# # 创建主目录菜单（顶级菜单）
# mainmenu = Menu(win)
# # 在顶级菜单上新增"文件"菜单的子菜单，同时不添加分割线
# filemenu = Menu(mainmenu, tearoff=False)
# # 新增"文件"菜单的菜单项，并使用accelerator设置菜单项的快捷键
# filemenu.add_command(label='新建', command=menuCommand, accelerator='Ctrl+N')
# filemenu.add_command(label='打开', command=menuCommand, accelerator='Ctrl+O')
# filemenu.add_command(label='保存', command=menuCommand, accelerator='Ctrl+S')
# # 添加一条分割线
# filemenu.add_separator()
# filemenu.add_command(label='退出', command=win.quit)
# # 在主目录菜单上新增"文件"选项，并通过menu参数与下拉菜单绑定
# mainmenu.add_cascade(label='文件', menu=filemenu)
# # 将主菜单设置在窗口上
# win.config(menu=mainmenu)
# # 绑定键盘事件，按下键盘上的相应的键时都会触发执行函数
# win.bind("<Control-n>", lambda event: menuCommand())
# win.bind("<Control-N>", lambda event: menuCommand())
# win.bind("<Control-o>", lambda event: menuCommand())
# win.bind("<Control-O>", lambda event: menuCommand())
# win.bind("<Control-s>", lambda event: menuCommand())
# win.bind("<Control-S>", lambda event: menuCommand())
# # 显示主窗口
# win.mainloop()



# import tkinter.messagebox
# from tkinter import *
# from tkinter import filedialog

# # 创建主窗口
# win = Tk()
# win.config(bg='#87CEEB')
# win.title("YL")
# win.geometry('450x350+300+200')
# # 设置窗口图标（请替换为实际存在的ico文件路径）
# win.iconbitmap('icons8-卡尔·拉格菲尔德-32.ico')
# # 创建文本控件
# text = Text(win, width=50, height=20, undo=True, autoseparators=False)
# text.pack(padx=10, pady=10, fill=BOTH, expand=True)
# # 文件路径变量
# current_file = None
# # 创建一个执行函数，点击下拉菜单中命令时执行
# def new_file():
#     """新建文件功能"""
#     global current_file
#     # 清空文本框内容
#     text.delete(1.0, END)
#     # 重置当前文件路径
#     current_file = None
#     win.title("YL - 新建文件")

# def open_file():
#     """打开文件功能"""
#     global current_file
#     # 打开文件对话框
#     file_path = filedialog.askopenfilename(
#         title="打开文件",
#         filetypes=[("文本文件", "*.txt"), ("Python文件", "*.py"), ("所有文件", "*.*")]
#     )
    
#     if file_path:
#         try:
#             # 读取文件内容
#             with open(file_path, 'r', encoding='utf-8') as file:
#                 content = file.read()
            
#             # 清空并插入新内容
#             text.delete(1.0, END)
#             text.insert(1.0, content)
            
#             # 更新当前文件路径和窗口标题
#             current_file = file_path
#             win.title(f"YL - {file_path}")
            
#         except Exception as e:
#             tkinter.messagebox.showerror("错误", f"打开文件失败：{str(e)}")

# def save_file():
#     """保存文件功能"""
#     global current_file
    
#     if current_file:
#         # 如果已存在文件路径，直接保存
#         try:
#             content = text.get(1.0, END)
#             with open(current_file, 'w', encoding='utf-8') as file:
#                 file.write(content)
#             tkinter.messagebox.showinfo("保存", "文件保存成功")
#         except Exception as e:
#             tkinter.messagebox.showerror("错误", f"保存文件失败：{str(e)}")
#     else:
#         # 如果是新文件，调用另存为功能
#         save_as_file()

# def save_as_file():
#     """另存为功能"""
#     global current_file
#     # 打开保存文件对话框
#     file_path = filedialog.asksaveasfilename(
#         title="保存文件",
#         defaultextension=".txt",
#         filetypes=[("文本文件", "*.txt"), ("Python文件", "*.py"), ("所有文件", "*.*")]
#     )
    
#     if file_path:
#         try:
#             content = text.get(1.0, END)
#             with open(file_path, 'w', encoding='utf-8') as file:
#                 file.write(content)
            
#             # 更新当前文件路径和窗口标题
#             current_file = file_path
#             win.title(f"YL - {file_path}")
            
#             tkinter.messagebox.showinfo("保存", "文件保存成功")
#         except Exception as e:
#             tkinter.messagebox.showerror("错误", f"保存文件失败：{str(e)}")

# # 创建主目录菜单（顶级菜单）
# mainmenu = Menu(win)

# # 在顶级菜单上新增"文件"菜单的子菜单，同时不添加分割线
# filemenu = Menu(mainmenu, tearoff=False)

# # 新增"文件"菜单的菜单项，并使用accelerator设置菜单项的快捷键
# filemenu.add_command(label='新建', command=new_file, accelerator='Ctrl+N')
# filemenu.add_command(label='打开', command=open_file, accelerator='Ctrl+O')
# filemenu.add_command(label='保存', command=save_file, accelerator='Ctrl+S')

# # 添加一条分割线
# filemenu.add_separator()
# filemenu.add_command(label='退出', command=win.quit)

# # 在主目录菜单上新增"文件"选项，并通过menu参数与下拉菜单绑定
# mainmenu.add_cascade(label='文件', menu=filemenu)

# # 将主菜单设置在窗口上
# win.config(menu=mainmenu)

# # 绑定键盘事件，按下键盘上的相应的键时都会触发执行函数
# win.bind("<Control-n>", lambda event: new_file())
# win.bind("<Control-N>", lambda event: new_file())
# win.bind("<Control-o>", lambda event: open_file())
# win.bind("<Control-O>", lambda event: open_file())
# win.bind("<Control-s>", lambda event: save_file())
# win.bind("<Control-S>", lambda event: save_file())

# # 显示主窗口
# win.mainloop()    